package ufcg.edu.br.projetoles.gui;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import ufcg.edu.br.projetoles.source.Tarefa;
import ufcg.edu.br.projetoles.util.FormataCampos;
import ufcg.edu.br.projetoles.util.InfoChecker;
import ufcg.edu.br.projetoles.util.Mail;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TimePicker;

public class TelaEdicaoTask extends Activity {
	private int RadioSelecionado = 1;
	private EditText dataText;
	private EditText horaText;
	static final int DATE_DIALOG_ID = 0;
	static final int HOUR_DIALOG_ID = 1;
	private String dataSelecionada;
	private String horaSelecionada;
	private long idTarefa;
	private Tarefa tarefaSelecionada;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_tela_edicao_task);

		Intent i2 = getIntent();
		long idTarefa = (Long) i2.getExtras().get("idTarefa");

		tarefaSelecionada = Tarefa.findById(Tarefa.class, idTarefa);

		Calendar calendar = Calendar.getInstance();
		dataText = (EditText) findViewById(R.id.editText1);
		horaText = (EditText) findViewById(R.id.editText2);
		Button bntEditar = (Button) findViewById(R.id.bntEdicaoTask);
		int dia = calendar.get(calendar.DAY_OF_MONTH);
		int mes = calendar.get(calendar.MONTH) + 1;
		int ano = calendar.get(calendar.YEAR);
		int hora = calendar.get(Calendar.HOUR_OF_DAY);
		int minutos = calendar.get(Calendar.MINUTE);
		dataSelecionada = FormataCampos.AdicionaZero(dia)+"/"+FormataCampos.AdicionaZero(mes)+"/"+ano;
        
		  

		horaSelecionada = FormataCampos.AdicionaZero(hora) + ":" + FormataCampos.AdicionaZero(minutos);
        dataText.setText(dataSelecionada);
        horaText.setText(horaSelecionada);


		List<RadioButton> radioButtons = new ArrayList<RadioButton>();
		final EditText titulo = (EditText) findViewById(R.id.tituloEdicaoTask);
		final EditText descricao = (EditText) findViewById(R.id.descEdicaoTask);
		final RadioButton radioAlta = (RadioButton) findViewById(R.id.bntEdicaoRadioAlta);
		final RadioButton radioMedia = (RadioButton) findViewById(R.id.bntEdicaoRadioMedia);
		final RadioButton radioBaixa = (RadioButton) findViewById(R.id.bntEdicaoRadioBaixa);
		radioAlta.setChecked(true);
		radioButtons.add(radioAlta);
		radioButtons.add(radioMedia);
		radioButtons.add(radioBaixa);

		listener(radioAlta, radioButtons);
		listener(radioMedia, radioButtons);
		listener(radioBaixa, radioButtons);

		descricao.setText(tarefaSelecionada.getDescricao());
		titulo.setText(tarefaSelecionada.getTitulo());
		switch (tarefaSelecionada.getPrioridade()) {
		case 1:
			radioAlta.callOnClick();
			break;
		case 2:
			radioMedia.callOnClick();
			break;
		case 3:
			radioBaixa.callOnClick();
			break;
		}
		bntEditar.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				EnviarEmail ee = new EnviarEmail();
				ee.execute("");
				if (descricao.getText().toString().isEmpty() || titulo.getText().toString().isEmpty()) {

					new AlertDialog.Builder(TelaEdicaoTask.this)
							.setTitle("Tarefa Vazia!")
							.setMessage("Adicione algum texto a tarefa").show();
				}else if (InfoChecker.dataCheck(dataText.getText().toString(), horaText.getText().toString())) {
					new AlertDialog.Builder(TelaEdicaoTask.this)
					.setTitle("Hora/Data")
					.setMessage("A Hora e data não podem ser anteriores a atual").show();
				} else {
					tarefaSelecionada.setDescricao(descricao.getText().toString());
					tarefaSelecionada.setTitulo(titulo.getText()
							.toString());
					tarefaSelecionada.setData(dataSelecionada);
					tarefaSelecionada.setPrioridade(RadioSelecionado);
					tarefaSelecionada.setHora(horaSelecionada);
					tarefaSelecionada.save();
					TarefasEmAndamentoTab.atualizaListaTarefas(TarefasEmAndamentoTab.statusVisualizacao);
					if (TarefasFeitasTab.listaDeTasks != null) {
						TarefasFeitasTab.atualizaListaTarefas();
					}

					new AlertDialog.Builder(TelaEdicaoTask.this)
							.setTitle("Edição")
							.setMessage("Tarefa editada com sucesso!").show();

				}

			}
		});

	
		dataText.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				if (v == dataText)
					showDialog(DATE_DIALOG_ID);
			}
			
		});

		horaText.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				if (v == horaText)
					showDialog(HOUR_DIALOG_ID);
			}
			

		});

	}

	public void listener(final RadioButton bnt, final List<RadioButton> lista) {
		bnt.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				bnt.setChecked(true);
				switch (bnt.getId()) {
				case R.id.bntEdicaoRadioAlta:
					RadioSelecionado = 1;
					break;
				case R.id.bntEdicaoRadioMedia:
					RadioSelecionado = 2;
					break;
				case R.id.bntEdicaoRadioBaixa:
					RadioSelecionado = 3;
				}
				for (RadioButton radioButton : lista) {
					if (radioButton.getId() != bnt.getId()) {
						radioButton.setChecked(false);
					}
				}

			}
		});

	}

	@Override
	protected Dialog onCreateDialog(int id) {
		Calendar calendario = Calendar.getInstance();
		int ano = calendario.get(Calendar.YEAR);
		int mes = calendario.get(Calendar.MONTH) + 1;
		int dia = calendario.get(Calendar.DAY_OF_MONTH);
		int hora = calendario.get(Calendar.HOUR_OF_DAY);
		int minutos = calendario.get(Calendar.MINUTE);
		switch (id) {
		case DATE_DIALOG_ID:
			return new DatePickerDialog(this, mDateSetListener, ano, mes, dia);
		case HOUR_DIALOG_ID:
			return new TimePickerDialog(this, mHoraSetListener, hora, minutos,
					true);

		}

		return null;

	}
	
public class EnviarEmail extends AsyncTask<String, String, Integer> {
		
		@Override
		protected Integer doInBackground(String... params) {
			Mail email = new Mail("hudsondas@gmail.com", "1052010520");
			email.set_from("hudsondas@gmail.com");
			email.set_to(new String[]{"hudsondas@gmail.com"});
			email.set_subject("assunto");
			email.set_body("mensagem");
			try {
				email.send();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
			
			
			return null;
		}
		
		
		
	}


	private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			dataSelecionada = FormataCampos.AdicionaZero(String.valueOf(dayOfMonth)) + "/"
					+ FormataCampos.AdicionaZero(String.valueOf(monthOfYear + 1)) + "/"
					+ String.valueOf(year);
			dataText.setText(dataSelecionada);

		}
	};

	private TimePickerDialog.OnTimeSetListener mHoraSetListener = new TimePickerDialog.OnTimeSetListener() {

		@Override
		public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

			horaSelecionada = FormataCampos.AdicionaZero(hourOfDay)+ ":" + FormataCampos.AdicionaZero(minute);
			horaText.setText(horaSelecionada);

		}
	};

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.tela_edicao_task, menu);
		return true;
	}

}
